/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is Forte for Java, Community Edition. The Initial
* Developer of the Original Code is Sun Microsystems, Inc. Portions
* Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
*/
package org.openidex.projects;
import java.io.IOException;
import java.util.*;
/**
*
* @author mryzl
*/
public class AbstractDiffSet extends Object implements DiffSet {
/**
* @associates String
*/
protected List items;
/**
* @associates Object
*/
protected Map addMap;
/**
* @associates String
*/
protected Set removeSet;
protected List order;
protected boolean clear = true;
{
addMap = new HashMap();
removeSet = new HashSet();
items = new LinkedList();
order = new LinkedList();
}
/** Creates new DiffSetImpl.
*/
public AbstractDiffSet() {
}
/** Add the item. If it was previously removed, cancel its record in "removed" set.
* @param name
* @param value
*/
public void add(String name, Object value) {
removeSet.remove(name);
if (!items.contains(name)) {
items.add(name);
}
addMap.put(name, value);
}
/** Remove the item. If it was previously added, cancel its record in "added" set.
* @param name
*/
public void remove(String name) {
items.remove(name);
addMap.remove(name);
removeSet.add(name);
}
/**
* @return Map of added items
*/
public List addedItems() {
return new ArrayList(items);
}
/** Added item by name.
* @param name - name of the item
* @return value of the item.
*/
public Object addedItem(String name) {
return addMap.get(name);
}
/**
* @return set of removed items
*/
public Set removedItems() {
return new HashSet(removeSet);
}
/** Test whether the diff set should be applied on fresh settings or not.
* @return true if it should be applied on fresh settings
*/
public boolean isClear() {
return clear;
}
/** Set clear flag.
* @param clear
*/
public void setClear(boolean clear) {
this.clear = clear;
}
/** Get order of items.
* @return Value of property order.
*/
public List getOrder() {
return order;
}
/** Set an order for items.
* @param order New value of property order.
*/
public void setOrder(List order) {
this.order = order;
}
/** Store DiffSet.
*/
public void store() throws IOException {
}
/** Clear DiffSet.
*/
public void clear() {
addMap = new HashMap();
removeSet = new HashSet();
items = new LinkedList();
order = new LinkedList();
}
}
/*
* Log
* 3 Gandalf 1.2 1/11/00 Martin Ryzl clear() added
* 2 Gandalf 1.1 12/22/99 Martin Ryzl
* 1 Gandalf 1.0 12/20/99 Martin Ryzl
* $
*/